home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / mail / delivery / sendmail.002 / sendmail / sendmail-8.7.3-bin / CHANGES-R5-R8 < prev    next >
Encoding:
Text File  |  1994-05-01  |  16.1 KB  |  449 lines

  1.     SUMMARY OF CHANGES BETWEEN SENDMAIL V5 and V8
  2.         @(#)CHANGES-R5-R8    8.1 (Berkeley) 2/26/94
  3.  
  4. The following is a summary of the changes between the last commonly
  5. available version of sendmail from Berkeley (5.67) and the latest
  6. version (8.6).  I can't guarantee that it is complete.
  7.  
  8. Many of these are ideas that had been tried in IDA, albeit many of
  9. them with a more general syntax.
  10.  
  11.  
  12. Connection Caching
  13.  
  14.    Instead of closing SMTP connections immediately, open connections are
  15.    cached for possible future use.  There is a limit to the number of
  16.    simultaneous open connections and the idle time of any individual
  17.    connection.
  18.    
  19.    This is of best help during queue processing (since there is the
  20.    potential of many different messages going to one site), although
  21.    it can also help when processing MX records which aren't handled
  22.    by MX Piggybacking.
  23.  
  24. MX Piggybacking
  25.  
  26.    If two hosts with different names in a single message happen to
  27.    have the same set of MX hosts, they can be sent in the same
  28.    transaction.  Version 8 notices this and tries to batch the messages.
  29.  
  30.    For example, if two sites ``foo.com'' and ``bar.com'' are both
  31.    served by UUNET, they will have the same set of MX hosts and will
  32.    be sent in one transaction.  UUNET will then split the message
  33.    and send it to the two individual hosts.
  34.  
  35. RFC 1123 Changes
  36.  
  37.    A number of changes have been made to make sendmail ``conditionally
  38.    compliant'' (that is, it satisfies all of the MUST clauses and most
  39.    but not all of the SHOULD clauses in RFC 1123).
  40.  
  41.    The major areas of change are (numbers are RFC 1123 section numbers):
  42.  
  43.    5.2.7    Response to RCPT command is fast.  Previously, sendmail
  44.         expanded all aliases as far as it could -- this could
  45.         take a very long time, particularly if there were
  46.         name server delays.  Version 8 only checks for the
  47.         existence of an alias and does the expansion later.
  48.    5.2.8    Numeric IP addresses are logged in Received: lines.
  49.         This helps tracing spoofed messages.
  50.    5.2.17    Self domain literal is properly handled.  Previously,
  51.         if someone sent to user@[a.b.c.d], where a.b.c.d is
  52.         your IP address, the mail would probably be rejected.
  53.         Version 8 special cases these addresses.
  54.    5.3.2    Better control over individual timeouts.  RFC 821 specified
  55.         no timeouts.  Older versions of sendmail had a single
  56.         timeout, typically set to two hours.  Version 8 allows
  57.         the configuration file to set timeouts for various
  58.         SMTP commands individually.
  59.    5.3.3    Error messages are sent as From:<>.  This was urged by
  60.         RFC 821 and reiterated by RFC 1123, but older versions
  61.         of sendmail never really did it properly.  Version 8
  62.         does.  However, some systems cannot handle this
  63.         perfectly legal address; if necessary, you can create
  64.         a special mailer that uses the `g' flag to disable this.
  65.    5.3.3    Error messages are never sent to <>.  Previously,
  66.         sendmail was happy to send responses-to-responses which
  67.         sometimes resulted in responses-to-responses-to-responses
  68.         which resulted in ....  you get the idea.
  69.    5.3.3    Route-addrs (the ugly ``<@hosta,@hostb:user@hostc>''
  70.         syntax) are pruned.  RFC 821 urged the use of this
  71.         bletcherous syntax.  RFC 1123 has seen the light and
  72.         officially deprecates them, further urging that you
  73.         eliminate all but ``user@hostc'' should you receive
  74.         one of these things.  Version 8 is slightly more generous
  75.         than the standards suggest; instead of stripping off all
  76.         the route addressees, it only strips hosts off up to
  77.         the one before the last one known to DNS, thus allowing
  78.         you to have pseudo-hosts such as foo.BITNET.  The 'R'
  79.         option will turn this off.
  80.  
  81.    The areas in which sendmail is not ``unconditionally compliant'' are:
  82.  
  83.    5.2.6    Sendmail does do header munging.
  84.    5.2.10    Sendmail doesn't always use the exact SMTP message
  85.         text from RFC 821.  This is a rather silly requirement.
  86.    5.3.1.1    Sendmail doesn't guarantee only one connect for each
  87.         host on queue runs.  Connection caching gives you most
  88.         of this, but it does not provide a guarantee.
  89.    5.3.1.1    Sendmail doesn't always provide an adequate limit
  90.         on concurrency.  That is, there can be several
  91.         independent sendmails running at once.  My feeling
  92.         is that doing an absolute limit would be a mistake
  93.         (it might result in lost mail).  However, if you use
  94.         the XLA contributed software, most of this will be
  95.         guaranteed (but I don't guarantee the guarantee).
  96.  
  97. Extended SMTP Support
  98.  
  99.    Version 8 includes both sending and receiving support for Extended
  100.    SMTP support as defined by RFC 1425 (basic) and RFC 1427 (SIZE);
  101.    and limited support for RFC 1426 (BODY).
  102.  
  103. Eight-Bit Clean
  104.  
  105.    Previous versions of sendmail used the 0200 bit for quoting.  This
  106.    version avoids that use.  However, for compatibility with RFC 822,
  107.    you can set option `7' to get seven bit stripping.
  108.  
  109.    Individual mailers can still produce seven bit out put using the
  110.    `7' mailer flag.
  111.  
  112. User Database
  113.  
  114.    The user database is an as-yet experimental attempt to provide
  115.    unified large-site name support.  We are installing it at Berkeley;
  116.    future versions may show significant modifications.
  117.  
  118.    The user database allows you to map both incoming and outgoing
  119.    addresses, much like IDA.  However, the interface set is still
  120.    better with IDA.
  121.  
  122. Improved BIND Support
  123.  
  124.    The BIND support, particularly for MX records, had a number of
  125.    annoying ``features'' which have been removed in this release.  In
  126.    particular, these more tightly bind (pun intended) the name server
  127.    to sendmail, so that the name server resolution rules are incorporated
  128.    directly into sendmail.
  129.  
  130.    The major change has been that the $[ ... $] operator didn't fully
  131.    qualify names that were in DNS as A or MX records.  Version 8 does
  132.    this qualification.
  133.  
  134. Keyed Files
  135.  
  136.    Generalized keyed files is an idea taken directly from IDA sendmail
  137.    (albeit with a completely different implementation).  They can be
  138.    useful on large sites.
  139.  
  140.    Version 8 includes an "NIS" map class to support NIS/YP maps.
  141.  
  142. Multi-Word Classes & Macros in Classes
  143.  
  144.    Classes can now be multiple words.  For example,
  145.  
  146.     CShofmann.CS.Berkeley.EDU
  147.  
  148.    allows you to match the entire string ``hofmann.CS.Berkeley.EDU''
  149.    using the single construct ``$=S''.
  150.  
  151.    Class definitions are now allowed to include macros -- for example:
  152.  
  153.     Cw$k
  154.  
  155.    is legal.
  156.  
  157. Deferred Macro Expansion
  158.  
  159.    The $&x construct has been adopted from IDA.
  160.  
  161. IDENT Protocol Support
  162.  
  163.    The IDENT protocol as defined in RFC 1413 is supported.
  164.  
  165. Parsing Bug Fixes
  166.  
  167.    A number of small bugs having to do with things like backslash-escaped
  168.    quotes inside of comments have been fixed.
  169.  
  170. Separate Envelope/Header Processing
  171.  
  172.    Since the From: line is passed in separately from the envelope
  173.    sender, these have both been made visible; the $g macro is set to
  174.    the envelope sender during processing of mailer argument vectors
  175.    and the header sender during processing of headers.
  176.  
  177.    It is also possible to specify separate per-mailer envelope and
  178.    header processing.  The SenderRWSet and RecipientRWset arguments
  179.    for mailers can be specified as ``envelope/header'' to give different
  180.    rewritings for envelope versus header addresses.
  181.  
  182. Owner-List Propagates to Envelope
  183.  
  184.    When an alias has an associated owner-list name, that alias is used
  185.    to change the envelope sender address.  This will cause downstream
  186.    errors to be returned to that owner.
  187.  
  188. Dynamic Header Allocation
  189.  
  190.    The fixed size limit on header lines has been eliminated.
  191.  
  192. New Command Line Flags
  193.  
  194.    The -B flag has been added to pass in body type information.
  195.  
  196.    The -p flag has been added to pass in protocol information.
  197.  
  198.    The -X flag has been added to allow logging of all protocol in and
  199.    out of sendmail for debugging.
  200.  
  201. Enhanced Command Line Flags
  202.  
  203.    The -q flag can limit limit a queue run to specific recipients,
  204.    senders, or queue ids using -qRsubstring, -qSsubstring, or
  205.    -qIsubstring respectively.
  206.  
  207. New and Old Configuration Line Types
  208.  
  209.    The `T' (Trusted users) configuration line has been deleted.  It
  210.    will still be accepted but will be ignored.
  211.  
  212.    The `K' line has been added to declare database maps.
  213.  
  214.    The `V' line has been added to declare the configuration version
  215.    level.
  216.  
  217.    The `M' (mailer) line takes a D= field to specify execution
  218.    directory.
  219.  
  220. New Options
  221.  
  222.    Several new options have been added, many to support new features,
  223.    others to allow tuning that was previously available only by
  224.    recompiling.  Briefly:
  225.  
  226.    b    Insist on a minimum number of disk blocks.
  227.  
  228.    C    Delivery checkpoint interval.  Checkpoint the queue (to avoid
  229.     duplicate deliveries) every C addresses.
  230.  
  231.    E    Default error message.  This message (or the contents of the
  232.     indicated file) are prepended to error messages.
  233.  
  234.    G    Enable GECOS matching.  If you can't find a local user name
  235.     and this option is enabled, do a sequential scan of the passwd
  236.     file to match against full names.  Previously a compile option.
  237.  
  238.    h    Maximum hop count.  Previously this was compiled in.
  239.  
  240.    j    Send errors in MIME-encapsulated format.
  241.  
  242.    J    Forward file path.  Where to search for .forward files -- defaults
  243.     to $HOME/.forward.
  244.  
  245.    k    Connection cache size.  The total number of connections that will
  246.     be kept open at any time.
  247.  
  248.    K    Connection cache lifetime.  The amount of time any connection
  249.     will be permitted to sit idle.
  250.  
  251.    l    Enable Errors-To: header.  These headers violate RFC 1123;
  252.       this option is included to provide back compatibility with
  253.     old versions of sendmail.
  254.  
  255.    O    Incoming daemon options (e.g., use alternate SMTP port).
  256.  
  257.    p    Privacy options.  These can be used to make your SMTP server
  258.     less friendly.
  259.  
  260.    R    Don't prune route-addrs.  Normally, if version 8 sees an address
  261.     like "<@hostA,@hostB:user@hostC>, sendmail will try to strip off
  262.     as much as it can (up to user@hostC) as suggested by RFC 1123.
  263.     This option disables that behaviour.
  264.  
  265.    U    User database spec.  This is still experimental.
  266.  
  267.    V    Fallback ``MX'' host.  This can be thought of as an MX host
  268.     that applies to all addresses that has a very high preference
  269.     value (that is, use it only if everything else fails).
  270.  
  271.    w    If set, assume that if you are the best MX host for a host,
  272.     you should send directly to that host.  This is intended
  273.     for compatibility with UIUC sendmail, and may have some
  274.     use on firewalls.
  275.  
  276.    7    Do not run eight bit clean.  Technically, you have to assert
  277.     this option to be RFC 821 compatible.
  278.  
  279. Extended Options
  280.  
  281.    The `r' (read timeout), `I' (use BIND), and `T' (queue timeout)
  282.    options have been extended to pass in more information.
  283.  
  284.    The `A' (alias file) option has been extended to allow multiple
  285.    alias files of different types.
  286.  
  287. New Mailer Keyletters
  288.  
  289.    L=    Set the allowable line length.  In V5, the L mailer flag implied
  290.     a line length limit of 990 characters; this is now settable to
  291.     an arbitrary value.
  292.  
  293. New Mailer Flags
  294.  
  295.    F=a    Try to use ESMTP.  It will fall back to SMTP if the initial
  296.       EHLO packet is rejected.
  297.  
  298.    F=b    Ensure a blank line at the end of messages.  Useful on the
  299.     *file* mailer.
  300.  
  301.    F=c    Strip all comments from addresses; this should only be used as
  302.       a last resort when dealing with cranky mailers.
  303.  
  304.    F=g    Never use the null sender as the envelope sender, even when
  305.     running SMTP.  This violates RFC 1123.
  306.  
  307.    F=7    Strip all output to this mailer to 7 bits.
  308.  
  309. Changed Mailer Flags
  310.  
  311.    F=L    Used to set the line limit to 990 bytes for SMTP compatibility.
  312.     It now does that only if the L= keyletter is not specified.
  313.     This flag is obsolete and should not be used.
  314.  
  315. New or Changed Pre-Defined Macros
  316.  
  317.    $k    UUCP node name from uname(2).
  318.  
  319.    $m    Domain part of our full hostname.
  320.  
  321.    $_    RFC 1413-provided sender address.
  322.  
  323.    $w    Previously was sometimes the full domain name, sometimes
  324.     just the first word.  Now guaranteed to be the first word
  325.     of the domain name (i.e., the host name).
  326.  
  327.    $j    Previously had to be defined -- it is now predefined to be
  328.     the full domain name, if that can be determined.  That is,
  329.     it is equivalent to $w.$m.
  330.  
  331. New Classes
  332.  
  333.    $=k    Initialized to contain $k.
  334.  
  335. New LHS Token
  336.  
  337.    Version 8 allows `$@' on the Left Hand Side of an `R' line to match
  338.    zero tokens.  This is intended to be used to match the null input.
  339.  
  340. Bigger Defaults
  341.  
  342.    Version 8 allows up to 100 rulesets instead of 30.  It is recommended
  343.    that rulesets 0-9 be reserved for sendmail's dedicated use in future
  344.    releases.
  345.  
  346.    The total number of MX records that can be used has been raised to
  347.    20.
  348.  
  349.    The number of queued messages that can be handled at one time has
  350.    been raised from 600 to 1000.
  351.  
  352. Different Default Tuning Parameters
  353.  
  354.    Version 8 has changed the default parameters for tuning queue costs
  355.    to make the number of recipients more important than the size of
  356.    the message (for small messages).  This is reasonable if you are
  357.    connected with reasonably fast links.
  358.  
  359. Auto-Quoting in Addresses
  360.  
  361.    Previously, the ``Full Name <email address>'' syntax would generate
  362.    incorrect protocol output if ``Full Name'' had special characters
  363.    such as dot.  This version puts quotes around such names.
  364.  
  365. Symbolic Names On Error Mailer
  366.  
  367.    Several names have been built in to the $@ portion of the $#error
  368.    mailer.  For example:
  369.  
  370.     $#error $@NOHOST $: Host unknown
  371.  
  372. New Built-In Mailers
  373.  
  374.    Two new mailers, *file* and *include*, are included to define options
  375.    when mailing to a file or a :include: file respectively.  Previously
  376.    these were overloaded on the local mailer.
  377.  
  378. SMTP VRFY Doesn't Expand
  379.  
  380.    Previous versions of sendmail treated VRFY and EXPN the same.  In
  381.    this version, VRFY doesn't expand aliases or follow .forward files.
  382.  
  383.    As an optimization, if you run with your default delivery mode
  384.    being queue-only, the RCPT command will also not chase aliases and
  385.    .forward files.  It will chase them when it processes the queue.
  386.    This speeds up RCPT processing.
  387.  
  388. [IPC] Mailers Allow Multiple Hosts
  389.  
  390.    When an address resolves to a mailer that has ``[IPC]'' as its
  391.    ``Path'', the $@ part (host name) can be a colon-separated list of
  392.    hosts instead of a single hostname.  This asks sendmail to search
  393.    the list for the first entry that is available exactly as though
  394.    it were an MX record.  The intent is to route internal traffic
  395.    through internal networks without publishing an MX record to the
  396.    net.  MX expansion is still done on the individual items.
  397.  
  398. Aliases Extended
  399.  
  400.    The implementation has been merged with maps.  Among other things,
  401.    this supports multiple alias files and NIS-based aliases.  For
  402.    example:
  403.  
  404.     OA/etc/aliases,nis:mail.aliases
  405.  
  406. Portability and Security Enhancements
  407.  
  408.    A number of internal changes have been made to enhance portability.
  409.  
  410.    Several fixes have been made to increase the paranoia factor.
  411.  
  412.    In particular, the permissions required for .forward and :include:
  413.    files have been tightened up considerably.  V5 would pretty much
  414.    read any file it could get to as root, which exposed some security
  415.    holes.  V8 insists that all directories leading up to the .forward
  416.    or :include: file be searchable ("x" permission) by the controlling
  417.    user" (defined below), that the file itself be readable by the
  418.    controlling user, and that .forward files be owned by the user
  419.    who is being forwarded to or root.
  420.  
  421.    The "controlling user" is the user on whose behalf the mail is
  422.    being delivered.  For example, if you mail to "user1" then the
  423.    controlling user for ~user1/.forward and any mailers invoked
  424.    by that .forward file, including :include: files.
  425.  
  426.    Previously, anyone who had a home directory could create a .forward
  427.    could forward to a program.  Now, sendmail checks to make sure
  428.    that they have an "approved shell", that is, a shell listed in
  429.    the /etc/shells file.
  430.  
  431. Miscellaneous Enhancements
  432.  
  433.    Sendmail writes a /etc/sendmail.pid file with the current process id
  434.    and the current invocation flags.
  435.  
  436.    Two people using the same program (e.g., submit) are considered
  437.    "different" so that duplicate elimination doesn't delete one of
  438.    them.  For example, two people forwarding their email to
  439.    |submit will be treated as two recipients.
  440.  
  441.    The mailstats program prints mailer names and gets the location of
  442.    the sendmail.st file from /etc/sendmail.cf.
  443.  
  444.    Many minor bugs have been fixed, such as handling of backslashes
  445.    inside of quotes.
  446.  
  447.    A hook has been added to allow rewriting of local addresses after
  448.    aliasing.
  449.